<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    
  </style>
</head>
<body>
  <div>hello</div>
  <div>world</div>
  <div>hahaha</div>
  <div>heihiehie</div>
</body>
<script>
  
  // const divs = document.querySelectorAll("div");

  // for(var i=0;i<divs.length;i++){
  //   ;(function(i){
  //     divs[i].onclick = function(){
  //       console.log(i);
  //     }
  //   })(i);
  // }

  // for(var i=0;i<divs.length;i++){
  //   divs[i].onclick = (function(i){
  //     return function(){
  //       console.log(i);
  //     }
  //   })(i);
  // }

  // for(let i=0;i<divs.length;i++){
  //   divs[i].onclick = function(){
  //     console.log(i);
  //   }
  // }

  // divs.forEach((val, i)=>{
  //   divs[i].onclick = function(){
  //     console.log(i);
  //   }
  // })

  // 需求：循环内绑定事件，事件处理函数中使用循环每次的计数器
  // 使用闭包可以做到

  // ==========

  // 回调函数：作为参数传入另一个函数
  // 给不能传参的回调函数传参

  // setTimeout( fn("haha"), 1000 );
  // function fn(a){
  //   console.log(a);
  // }

  // setTimeout( fn("haha"), 1000 );
  // function fn(a){
  //   return function(){
  //     console.log(a);
  //   }
  // }

  // ========

  const createObj = (function(){
    const obj = {};
    return function(n){
      obj.name = n;
      return obj;
    }
  })();

  const p = createObj("admin");
  console.log(p);


</script>
</html>